home *** CD-ROM | disk | FTP | other *** search
/ STraTOS 1997 April & May / STraTOS 1 - 1997 April & May.iso / CD01 / PRGMANIA / @FALCON / VISUAL41 / MACROS.S < prev    next >
Encoding:
Text File  |  1996-11-09  |  6.1 KB  |  366 lines

  1. *--------------------------------------------------------------------------*
  2. ;    MACROS CUSTOM GEN & WAX
  3.  
  4. save:        macro
  5.         ifc '\0','W'
  6.         fail ; l'extension en minuscule
  7.             endc
  8.         ifc '\0','L'
  9.         fail ; l'extension en minuscule
  10.         endc
  11.         ifeq \?1-2
  12.         move.\0 \1,-(sp)
  13.         else
  14.         movem.\0 \1,-(sp)
  15.         endc
  16.         endm
  17.  
  18. load:        macro
  19.         ifc '\0','W'
  20.         fail ; l'extension en minuscule
  21.             endc
  22.         ifc '\0','L'
  23.         fail ; l'extension en minuscule
  24.         endc
  25.         ifeq \?1-2
  26.         move.\0 (sp)+,\1
  27.         else
  28.         movem.\0 (sp)+,\1
  29.         endc
  30.         endm
  31.  
  32. appel:        macro
  33.         move.w #\2,-(sp)
  34.         trap #\1
  35.         ifle \3-8
  36.         addq.l #\3,sp
  37.         else
  38.         add.l #\3,sp
  39.         endc
  40.         endm
  41.  
  42. SYNCHRO_GEM:    macro
  43. \@wait_nul:        appel dos,$0b,2    ; teste du buffer ...
  44.         tst.w d0
  45.         beq.s \@the_end    ; pas de touche en buffer ?
  46.         CRAWCIN
  47.         bra.s \@wait_nul
  48. \@the_end:        VSYNC
  49.         endm
  50.  
  51. RESOLUT:        macro        ; \1=vidéo mode,\2=0:ST / \2=3:FALC
  52.         move.w \1,-(sp)
  53.         move.w \2,-(sp)
  54.         move.l \3,-(sp)
  55.         move.l \4,-(sp)
  56.         appel xbios,5,14
  57.         VSYNC
  58.         endm
  59.  
  60. MOUSEOFF:        macro
  61.         pea GWVA_APP_OBJ_MACRO_MOUSE_INHIBE
  62.         move.w #1-1,-(sp)
  63.         appel xbios,25,8
  64.         endm
  65.         DATA
  66. GWVA_APP_OBJ_MACRO_MOUSE_INHIBE:    dc.b $12
  67.         even
  68.         TEXT
  69.  
  70. MOUSEON:        macro
  71.         pea GWVA_APP_OBJ_MACRO_MOUSE_DEFAULT
  72.         move.w #2-1,-(sp)
  73.         appel xbios,25,8
  74.         endm
  75.         DATA
  76. GWVA_APP_OBJ_MACRO_MOUSE_DEFAULT:    dc.b $80,$01
  77.         TEXT
  78.  
  79. FILE_OPEN:        macro        ; \1=read/write \2=name \3=destination pour le handle
  80.         ifeq \1-1        ; 0=lecture,other=write
  81.         clr.w -(sp)
  82.         pea \2
  83.         appel dos,$3c,8    ; file create
  84.         move d0,\3
  85.         endc
  86.         ifeq \1
  87.         clr.w -(sp)
  88.         pea \2
  89.         appel dos,$3d,8    ; file open
  90.         move d0,\3
  91.         endc
  92.         ifeq \1-2
  93.         move.w #2,-(sp)
  94.         pea \2
  95.         appel dos,$3d,8
  96.         move d0,\3
  97.         endc
  98.         endm
  99.  
  100. RESERVE_SCREENS:    macro nb_ecrans,resolut
  101.         ; + x_max_p,y_max_p,nb_bits_per_pix
  102.         move.l #screens,d0
  103.         and.l #$ffffff00,d0
  104.         add.l #$100,d0
  105.         move.l d0,a0
  106.         lea ecrans,a1
  107.  
  108.         move #\1-1,d0
  109. .raz_screens:    move.l a0,(a1)+
  110.         move.l #x_max_p*y_max_p*nb_bits_per_pix/8/4,d1
  111. .raz_screen:    clr.l (a0)+
  112.         subq.l #1,d1
  113.         bne.s .raz_screen
  114.         dbf d0,.raz_screens
  115.  
  116.         move.l ecran,save_ad_ecr
  117.         RESOLUT #-1
  118.         and #$1ff,d0
  119.         move d0,save_mode
  120.  
  121.         move #\2,d1
  122.         btst #5,d0
  123.         bne.s .pal_modus
  124.         bclr #5,d1
  125.  
  126. .pal_modus:        btst #4,d0        ; tv
  127.         bne.s .vga_modus
  128.         bclr #4,d1        ; tv
  129.         bchg #8,d1        ; vertical mode
  130. .vga_modus:
  131.         ifne (\2-res32020016)
  132.         RESOLUT d1,#3,ecrans,ecrans
  133.         else
  134.         RESOLUT d1,#0,ecrans,ecrans
  135.         endc
  136.  
  137.  BSS
  138. save_mode:        ds.w 1
  139. save_ad_ecr:    ds.l 1
  140. ecrans:        ds.l \1
  141. screens:        ds.l \1*x_max_p*y_max_p*nb_bits_per_pix/8/4
  142.         ds.b 256
  143.  TEXT
  144.         endm
  145.  
  146. CHANGE_RESOLUT:    macro resolut
  147.         move.l ecrans,a0
  148.         move.l #x_max_p*y_max_p*nb_bits_per_pix/8/4,d1
  149. .raz_screen:    clr.l (a0)+
  150.         subq.l #1,d1
  151.         bne.s .raz_screen
  152.  
  153.         move.l ecran,save_ad_ecr
  154.         RESOLUT #-1
  155.         and #$1ff,d0
  156.         move d0,save_mode
  157.  
  158.         move #\1,d1
  159.         btst #5,d0
  160.         bne.s .pal_modus
  161.         bclr #5,d1
  162.  
  163. .pal_modus:        btst #4,d0        ; tv
  164.         bne.s .vga_modus
  165.         bclr #4,d1        ; tv
  166.         bchg #8,d1        ; vertical mode
  167. .vga_modus:
  168.         ifne (\1-res32020016)
  169.         RESOLUT d1,#3,ecrans,ecrans
  170.         else
  171.         RESOLUT d1,#0,ecrans,ecrans
  172.         endc
  173.  
  174.         endm
  175.  
  176. RESTORE_SCREENS:    macro
  177.         RESOLUT save_mode,#3,save_ad_ecr,save_ad_ecr
  178.         endm
  179.  
  180.  
  181. COLOR256:        macro
  182.         ifnd FLG_INIBE_COLOR
  183.         move.l \1,palette256
  184.         endc
  185.         endm
  186.  
  187. COLOR:        macro
  188.         ifnd FLG_INIBE_COLOR
  189.         move.w \1,palette
  190.         endc
  191.         endm
  192.  
  193. ZILOGR:        macro registre,byte,canal
  194.         ifc 'A','\3'
  195.         move.b \1,zilog8530A
  196.         move.b zilog8530A,\2
  197.         else
  198.         move.b \1,zilog8530B
  199.         move.b zilog8530B,\2
  200.         endc
  201.         endm
  202.  
  203. ZILOGW:        macro registre,byte,canal
  204.         ifc 'A','\3'
  205.         move.b \1,zilog8530A
  206.         move.b \2,zilog8530A
  207.         else
  208.         move.b \1,zilog8530B
  209.         move.b \2,zilog8530B
  210.         endc
  211.         endm
  212.  
  213. COPY_STRING:    macro    ; (\1) source, (\2) dest, d0.b end char
  214. .\@ccp:        move.b (\1)+,(\2)+
  215.         cmp.b -1(\1),d0
  216.         bne.s .\@ccp
  217.         endm
  218.  
  219. COPY_STRING_0:    macro    ; (\1) source, (\2) dest
  220. .\@ccp:        move.b (\1)+,(\2)+
  221.         bne.s .\@ccp
  222.         endm
  223.  
  224. *--------------------------------------------------------------------------*
  225. ;    MACROS SYSTEME
  226.  
  227. CRAWCIN:        macro
  228.         appel dos,7,2
  229.         endm
  230.  
  231. SUPEXEC:        macro
  232.         pea \1
  233.         appel xbios,38,6
  234.         endm
  235.  
  236. VSYNC:        macro
  237.         appel xbios,$25,2
  238.         endm
  239.  
  240. VSETMODE:        macro mode
  241.         move.w \1,-(sp)
  242.         appel xbios,88,4
  243.         endm
  244.  
  245. CCONWS:        macro string
  246.         pea \1
  247.         appel dos,9,6
  248.         endm
  249.  
  250. FATTRIB:        macro attr,flag,fname
  251.         move.w \1,-(sp)
  252.         move.w \2,-(sp)
  253.         pea \3
  254.         appel dos,$43,10
  255.         endm
  256.  
  257. FDELETE:        macro fname
  258.         pea \1
  259.         appel dos,$41,6
  260.         endm
  261.  
  262. FREAD:        macro buf,length,handle
  263.         move.l \1,-(sp)
  264.         move.l \2,-(sp)
  265.         move.w \3,-(sp)
  266.         appel dos,$3f,12
  267.         endm
  268.  
  269. FWRITE:        macro buf,count,handle
  270.         move.l \1,-(sp)
  271.         move.l \2,-(sp)
  272.         move.w \3,-(sp)
  273.         appel dos,$40,12
  274.         endm
  275.  
  276. FSEEK:        macro mode,handle,offset
  277.         ; mode = begining (0), current (1) end (2)
  278.         move.w \1,-(sp)
  279.         move.w \2,-(sp)
  280.         move.l \3,-(sp)
  281.         appel dos,$42,10
  282.         endm
  283.  
  284. FCLOSE:        macro handle
  285.         move.w \1,-(sp)
  286.         appel dos,$3e,4
  287.         endm
  288.  
  289. FSFIRST:        macro attribs,fspec
  290.         move.w \1,-(sp)
  291.         pea \2
  292.         appel dos,$4e,8
  293.         endm
  294.  
  295. FSNEXT:        macro
  296.         appel dos,$4f,2
  297.         endm
  298.  
  299. DFREE:        macro buf,drive
  300.         move.w \2,-(sp)
  301.         pea \1
  302.         appel dos,$36,8
  303.         endm
  304.  
  305. DGETDRV:        macro
  306.         appel dos,$19,2
  307.         endm
  308.  
  309. DSETDRV:        macro drive
  310.         move \1,-(sp)
  311.         appel dos,$e,4
  312.         endm
  313.  
  314. DGETPATH:        macro drive,buf
  315.         move.w \1,-(sp)
  316.         pea \2
  317.         appel dos,$47,8
  318.         endm
  319.  
  320. DSETPATH:        macro path
  321.         pea \1
  322.         appel dos,$3b,6
  323.         endm
  324.  
  325. FSETDTA:        macro ndta
  326.         pea \1
  327.         appel dos,$1a,6
  328.         endm
  329.  
  330. FGETDTA:        macro
  331.         appel dos,$2f,2
  332.         endm
  333.  
  334. MALLOC:        macro amount
  335.         move.l \1,-(sp)
  336.         appel dos,$48,6
  337.         endm
  338.  
  339. MXALLOC:        macro mode,amount (RAM_ST, RAM_TT, RAM_ST_TT, RAM_TT_ST)
  340.         move.w \1,-(sp)
  341.         move.l \2,-(sp)
  342.         appel dos,$44,8
  343.         endm
  344.  
  345. MFREE:        macro startadr
  346.         move.l \1,-(sp)
  347.         appel dos,$49,6
  348.         endm
  349.  
  350. *--------------------------------------------------------------------------*
  351. ;    MACROS SEMI-SYSTEME
  352.  
  353. SUPER:        macro mode        ; 0=go super ; 1=get current mode
  354.         move.l #\1,-(sp)
  355.         appel dos,$20,6
  356.         ifne \1-1
  357.         move.l d0,GWVA_OLD_SUPERVISOR_STACK
  358.         endc
  359.         endm
  360.  
  361. USER:        macro
  362.         move.l GWVA_OLD_SUPERVISOR_STACK,-(sp)
  363.         appel dos,$20,6
  364.         endm
  365.  
  366.